package com.cskaoyan.javase.oop1._16access._2member;
/**
 * 访问权限修饰级别在修饰
 * 类中成员（包括普通成员，静态成员）以及构造器时
 * 具有四种访问级别都可用
 *
 * 注意事项:
 *      1.如果不具有类的访问权限,那么类中成员即便是public也访问不到.
 *      类的访问权限控制要大于类中成员
 *      先能访问类,才能访问类中成员.
 *
 *      2.构造器和类中成员一样,也有四种访问级别.
 *          尤其注意当构造器被私有化后,在外部一般情况下是不能new它的对象的.
 *
 *      3.私有成员只要是在自身类中都可以任意访问.
 *          不管这个对象是this
 *          还是外部传入的自身对象
 *
 * @since 11:35
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Student {
    // num仅在同类中能够被访问
    private int num;
    // num2是默认的访问权限,同包下都可以访问
    int num2;
    // num3是公共的访问权限,任意被访问
    public int num3;

    public void test(){
        // 'Teacher()' has private access in 'com.cskaoyan.javase.oop1._16access._2member.Teacher'
        // new Teacher();
    }

    /*
        假如一个类中有一个方法需要传入自身对象
        那么这个传入的自身对象
            同样也可以访问它的私有成员
        私有成员只要是在同类中,都可以访问
            不论这个对象是自身对象还是外部传入的对象
            只要是自身类对象都可以
     */
    public void test(Student s){
        System.out.println(s.num);
        System.out.println(this.num);
    }


}
class Teacher{
    public String name;

    private Teacher() {
    }
}
